import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
from mtest import true_false_test
# nastavenie jazyka
from locale import setlocale, LC_ALL
from platform import uname
if uname()[0] == 'Linux':
setlocale(LC_ALL, 'sk_SK.utf8')
else:
setlocale(LC_ALL, 'sk_SK')
plt.rcParams["axes.formatter.use_locale"] = True
V nasledujúcich príkladoch budeme kresliť grafy elementárnych funkcií spolu s ich deriváciami.
To, že derivácia je správne vyrátaná, budeme overovať graficky. Skúška správnosti pozostáva z nakreslenia dotyčnice grafu funkcie pre vybrané body. Predpis pre dotyčnicu grafu funkcie $f$ v bode $[a,f(a)]$ má tvar $$y = f'(a) (x-a) + f(a).$$
Dokumentácia:
Nájdite deriváciu funkcie $$y = \frac{3}{5}x^{\frac{5}{3}}-x^{-\sqrt{5}}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return 3/5 * X ** (5/3) - X ** (-np.sqrt(5))
X = np.linspace(0, 5, 5*100+1)
X = X[X > 0] # len kladné čísla patria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 6)
## diagram
init_subplot(ax)
ax.set_ylim(-10, 10)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \frac{3}{5}x^{\frac{5}{3}}-x^{-\sqrt{5}}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \frac{1+x-x^2}{1-x+x^2}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (1 + X - X ** 2) / (1 - X + X ** 2)
X = np.linspace(-4, 4, 8*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 6)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-3, 3)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \dfrac{1+x-x^2}{1-x+x^2}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper left')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = (3x-7)^{10}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (3 * X - 7) ** 10
X = np.linspace(7/3-1/3, 7/3+1/3, 2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 6)
## diagram
init_subplot(ax, 2, 0)
ax.set_aspect(1/2)
ax.set_ylim(-1.1, 1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = (3x-7)^{10}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \sin(\cos^2 x)\cdot\cos(\sin^2 x).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(np.cos(X) ** 2) * np.cos(np.sin(X) ** 2)
X = np.linspace(-2*np.pi, 2*np.pi, 4*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 2.5)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-1.2, 1.2)
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \sin(\cos^2\,x)\cdot\cos(\sin^2\,x)$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.30, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \frac{\sin^2 x}{\sin x^2}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(X) ** 2 / np.sin(X ** 2)
X = np.linspace(-np.pi-np.pi/8, np.pi+np.pi/8, 18*10000+1)
# pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru funkcie
ps = [X[0], -np.sqrt(3*np.pi), -np.sqrt(2*np.pi), -np.sqrt(np.pi), 0, np.sqrt(np.pi), np.sqrt(2*np.pi), np.sqrt(3*np.pi), X[-1]]
Is = []
for i in range(len(ps)-1):
Is.append(X[(ps[i] < X) & (X < ps[i+1])])
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 8)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-3.3, 3.3)
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 4 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 4) for n in xtick_numerators])
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \dfrac{\sin^2\,x}{\sin\,x^2}$")[0].get_color()
for I in Is:
ax.plot(I, f(I), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
## asymptoty bez smernice
Ay = np.linspace(-3.3, 3.3)
for p in [p for p in ps if p != 0]:
Ax = np.ones(len(Ay)) * p
ax.plot(Ax, Ay, 'k--', lw=1)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return X # ufunc verzia derivácie
# dIs = Is # pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color()
# for dI in dIs:
# ax.plot(dI, df(dI), c=color)
# ax.plot(None, None, 'o', c=color, mfc='w') # číslo None nepatrí do oboru definície
## skúška správnosti
# for dI in dIs:
# true_false_test(ax, f, dI, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.23, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \ln(x+\sqrt{x^2+1}).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.log(X + np.sqrt(X ** 2 + 1))
X = np.linspace(-3, 3, 6*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 5)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-2.2, 2.2)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \ln\,(x+\sqrt{x^2+1})$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = x^x, \qquad x > 0.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return X ** X
X = np.linspace(0, 2, 2*200+1)
X = X[X > 0] # len kladné čísla patria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 8)
## diagram
init_subplot(ax)
#ax.set_aspect('equal')
ax.set_aspect(1/2)
ax.set_ylim(-4, 4)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = x^x$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = (\cos x)^{(\sin x)}+(\sin x)^{(\cos x)}, \qquad x \in \left(0,\frac{\pi}{2}\right).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.cos(X) ** np.sin(X) + np.sin(X) ** np.cos(X)
X = np.linspace(0, np.pi/2, 1000+1)
X = X[(0 < X) & (X < np.pi/2)] # čísla 0 a π/2 nepatria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(10, 8)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
## x-ová os
xtick_numerators = range(0, 4+1)
ax.set_xticks([n * np.pi / 8 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 8) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-3*np.pi/8*1.1, np.pi/2*1.1)
ytick_numerators = range(-3, 4+1)
ax.set_yticks([n * np.pi / 8 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 8) for n in ytick_numerators])
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = (\cos\,x)^{(\sin\,x)}+(\sin\,x)^{(\cos\,x)}$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
ax.plot(np.pi/2, 1, 'o', c=color, mfc='w') # číslo π/2 nepatrí do oboru definície
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = ldots$")[0].get_color()
# ax.plot(dX, df(dX), c=color)
# ax.plot(None, None, 'o', c=color, mfc='w') # číslo None nepatrí do oboru definície
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(-0.50, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = (x+1)^2(2x-5)^2(1-x). \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (X + 1) ** 2 * (2 * X - 5) ** 2 * (1 - X)
X = np.linspace(-1.2, 2.8, 40*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
## diagram
init_subplot(ax)
ax.set_aspect(1/20)
ax.set_xlim(X.min(), X.max())
ax.set_ylim(-40*1.1, 40*1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = (x+1)^2(2x-5)^2(1-x)$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \frac{3x^2-2}{(1+x)^2(1-x)^3}. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (3 * X ** 2 - 2) / ((1 + X) ** 2 * (1 - X) ** 3)
X = np.linspace(-2.5, 2.5, 50*10+1)
X1, X2, X3 = X[X < -1], X[(X > -1) & (X < 1)], X[X > 1] # čísla -1, 1 nepatria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 10)
## diagram
init_subplot(ax)
ax.set_aspect(5/30)
Y = np.linspace(-15*1.1, 15*1.1)
ax.set_ylim(Y.min(), Y.max())
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \dfrac{3x^2-2}{(1+x)^2(1-x)^3}$")[0].get_color()
ax.plot(X1, f(X1), c=color)
ax.plot(X2, f(X2), c=color)
ax.plot(X3, f(X3), c=color)
## asymptota bez smernice
Ay1 = Y
Ax1 = np.ones(len(Ay1)) * (-1)
ax.plot(Ax1, Ay1, 'k--', lw=1) # v bode -1
Ay2 = Y
Ax2 = np.ones(len(Ay2))
ax.plot(Ax2, Ay2, 'k--', lw=1) # v bode 1
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX1, dX2, dX3 = None, None, None # tie prvky z X1, X2, X3, ktoré patria do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color() # tento údaj upravte
# ax.plot(dX1, df(dX1), c=color)
# ax.plot(dX2, df(dX2), c=color)
# ax.plot(dX3, df(dX3), c=color)
## skúška správnosti
# true_false_test(ax, f, dX1, df)
# true_false_test(ax, f, dX2, df)
# true_false_test(ax, f, dX3, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.3, 1.05))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \cos(\cos(\sin\,x))). \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.cos(np.cos(np.sin(X)))
X = np.linspace(-2*np.pi, 2*np.pi, 4*2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 4)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# ax.grid()
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-1.1, 1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \cos(\cos(\sin\,x)))$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.25, 1.30))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = 2^{\cos^3 x}. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return 2 ** np.cos(X) ** 3
X = np.linspace(-2*np.pi, 2*np.pi, 4*2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 5)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# ax.grid()
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators]) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(-2.2, 3.2)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = 2^{\cos^3\,x}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.25, 1.10))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = x \arcsin^2 x + 2 \sqrt{1 - x^2} \arcsin x - 2x. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia/riešenie)
####
### zadanie
# vstupné údaje
def f(X): return X * np.arcsin(X) ** 2 + 2 * np.sqrt(1 - X ** 2) * np.arcsin(X) - 2 * X
X = np.linspace(-1, 1, 2*100000+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 10)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# ax.grid()
ax.set_ylim(-0.6, 2.6)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = x\,\arcsin^2\,x + 2 \sqrt{1 - x^2}\,\arcsin\,x - 2x$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot([-1, 1], [f(-1), f(1)], 'o', c=color)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = X[(X > -1) & (X < 1)] # čísla -1 a 1 nepatria do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color()
# ax.plot(dX, df(dX), c=color)
# ax.plot([-1, 1], [None, None], 'o', c=color, mfc='w') # čísla -1 a 1 nepatria do definičného oboru derivácie
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.20, 1.05))
# fig.savefig("<meno súboru>.png")
fig.show()